<?php
class Default_Model_GoiTinMapper {

	protected $_dbTable;
	protected $db;

	public function setDbTable($dbTable) {
		if (is_string($dbTable)) {
			$dbTable = new $dbTable();
		}
		if (!$dbTable instanceof Zend_Db_Table_Abstract) {
			throw new Exception('Invalid table data gateway provided');
		}
		$this->_dbTable = $dbTable;
		return $this;
	}

	public function getDbTable() {
		if (null === $this->_dbTable) {
			$this->setDbTable('Default_Model_DbTable_GoiTin');
		}
		return $this->_dbTable;
	}

	public function getDb() {
		if ($this->db === null) {
			$this->db=Zend_Registry::get('connectDB');
		}
		return $this->db;
	}
	
	/*
	 *processResultSet
	 */
	private function processResultSet($resultSet, $option = 'view') {
		$entries = array();
		if($option == 'view'){
			foreach ($resultSet as $row) {
				$entry = new Default_Model_TableColumn_GoiTin($row);
				$entries[] = $entry;
			}
		} else {
			foreach ($resultSet as $row) {
				$entries[] = $row;
			}
		}
		return $entries;
	}
	
	/*
	 *fetch
	 */
	public function fetchAll($query = null, $option = 'view') {
		 if ($query === NULL) {
            $resultSet = $this->getDbTable()->fetchAll();
        } else {
            $table = $this->getDbTable();
            $select = $table->select();
            $select->from($table)
                   ->where($query);
            $resultSet = $this->getDbTable()->fetchAll($select);
        }
        return $this->processResultSet($resultSet->toArray(), $option);
	}
	
	/*
	 * getNameById
	 */
	public function getNameById($id) {
		$item = $this->getDbTable()->find($id);
		$name = null;
		if($item != null)
			$name = $item['ten'];
		return $name;
	}
}